import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path';

const isProd = process.env.NODE_ENV === 'production';

/**
 * defineConfig获取ts类型提示
 */
export default defineConfig({
  // 基础路径
  base: isProd ? '/learn-vite/' : '/',
  /**
   * vite中不需要配置mode
   * 因为mode在使用开发服务器时默认为'development'
   * 在build时默认为'production'
   */
  // 打包配置
  build: {
    // 打包生产的文件所在目录
    outDir: path.resolve(__dirname, 'lib'),
    // 兼容的浏览器 默认为'modules',即支持esm的浏览器
    // target: 'modules',
    // 发布自己的库时可以用到
    // lib: {},
    // emptyOutDir 每次打包时清除以前的打包内容，默认为true
    // emptyOutDir: true,
    // copyPublicDir 打包时把public中的文件复制到outDir中，默认为true
    // copyPublicDir: true,
  },
  // 开发服务器配置
  server: {
    // 端口
    port: 3000,
    /**
     * 请求代理 继承自http-proxy
     */
    proxy: {
      /**
       * 请求路径http://localhost:3000/api/getBirdBest
       * 请求目标http://81.68.151.74/getBirdBest
       */
      '/api': {
        target: 'http://81.68.151.74',
        changeOrigin: true
      }
    },
    /**
     * 对除了node_modules之外的所有文件进行监听，包含config配置文件
     * 如果不想监听某个文件，就使用ignored屏蔽
     * 一般不需要配置该项
     */
    // watch: {
    //   ignored: []
    // }
  },
  // rollup插件
  plugins: [react()],
  resolve: {
    // 配置别名
    // 该配置项最好配合tsconfig.json中的baseUrl和path一起配置
    // 这样可以提供路径提示
    alias: {
      '@': './src'
    },
    /**
     * extensions扩展无需配置，
     * 默认为['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json']
     * 相当于给配置好了
     */
  },
  // css配置
  css: {
    // 是否在开发模式中启用sourcemap，默认为false
    devSourcemap: true,
  },
  // 配置json
  json: {
    /**
     * namedExports是否支持从.json文件中进行按名导入，默认为true
     * import packages from '../package.json'
     */
    namedExports: false,
    /**
     * stringify也是导入.json文件的，不过是以export default JSON.parse("...")的形式
     * 这样性能比namedExports性能更好。默认为false
     * import packages from '../package.json';
     * stringify设置为true后，namedExports就无效了。
     */
    stringify: true,
  },
  /**
   * 清屏错误信息 默认为true
   * 设置true和设置false目前看没啥区别
   */
  // clearScreen: false,
})
